home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xalan.jar / org / apache / xalan / xpath / XSLTJavaClassEngine.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-12  |  4.6 KB  |  163 lines

  1. package org.apache.xalan.xpath;
  2.  
  3. import com.ibm.bsf.BSFException;
  4. import com.ibm.bsf.util.BSFEngineImpl;
  5. import com.ibm.cs.util.ReflectionUtils;
  6. import java.lang.reflect.Constructor;
  7. import java.lang.reflect.InvocationTargetException;
  8. import java.lang.reflect.Method;
  9.  
  10. public class XSLTJavaClassEngine extends BSFEngineImpl {
  11.    // $FF: synthetic field
  12.    static Class class$java$lang$Double;
  13.    // $FF: synthetic field
  14.    static Class class$java$lang$Float;
  15.    // $FF: synthetic field
  16.    static Class class$java$lang$Boolean;
  17.    // $FF: synthetic field
  18.    static Class class$java$lang$Byte;
  19.    // $FF: synthetic field
  20.    static Class class$java$lang$Character;
  21.    // $FF: synthetic field
  22.    static Class class$java$lang$Short;
  23.    // $FF: synthetic field
  24.    static Class class$java$lang$Integer;
  25.    // $FF: synthetic field
  26.    static Class class$java$lang$Long;
  27.  
  28.    public Object eval(String var1, int var2, int var3, Object var4) throws BSFException {
  29.       throw new BSFException(BSFException.REASON_UNSUPPORTED_FEATURE, "Java bytecode engine can't evaluate expressions");
  30.    }
  31.  
  32.    public Object call(Object var1, String var2, Object[] var3) throws BSFException {
  33.       int var4 = var2.lastIndexOf(".");
  34.       Object[] var5 = null;
  35.       boolean var6 = false;
  36.       if (var4 == -1) {
  37.          var1 = var3[0];
  38.          if (var3.length > 1) {
  39.             var5 = new Object[var3.length - 1];
  40.             System.arraycopy(var3, 1, var5, 0, var3.length - 1);
  41.          }
  42.       } else {
  43.          String var7 = var2.substring(0, var4);
  44.          var2 = var2.substring(var4 + 1);
  45.          var5 = var3;
  46.          var6 = var2.equals("new");
  47.  
  48.          try {
  49.             var1 = Class.forName(var7);
  50.          } catch (ClassNotFoundException var12) {
  51.             throw new BSFException(1, "unable to load class '" + var7 + "'", var12);
  52.          }
  53.       }
  54.  
  55.       Class[] var16 = null;
  56.       if (var5 != null) {
  57.          var16 = new Class[var5.length];
  58.  
  59.          for(int var8 = 0; var8 < var16.length; ++var8) {
  60.             var16[var8] = var5[var8] != null ? var5[var8].getClass() : null;
  61.          }
  62.       }
  63.  
  64.       boolean var17 = false;
  65.       boolean var9 = false;
  66.  
  67.       try {
  68.          while(!var17) {
  69.             if (var5 == null) {
  70.                var17 = true;
  71.             } else if (!var9) {
  72.                for(int var18 = 0; var18 < var16.length; ++var18) {
  73.                   Class var22 = var16[var18];
  74.                   if (var22 != null) {
  75.                      if (var22 == (class$java$lang$Double != null ? class$java$lang$Double : (class$java$lang$Double = class$("java.lang.Double")))) {
  76.                         var22 = Double.TYPE;
  77.                      }
  78.  
  79.                      if (var22 == (class$java$lang$Float != null ? class$java$lang$Float : (class$java$lang$Float = class$("java.lang.Float")))) {
  80.                         var22 = Float.TYPE;
  81.                      } else if (var22 == (class$java$lang$Boolean != null ? class$java$lang$Boolean : (class$java$lang$Boolean = class$("java.lang.Boolean")))) {
  82.                         var22 = Boolean.TYPE;
  83.                      } else if (var22 == (class$java$lang$Byte != null ? class$java$lang$Byte : (class$java$lang$Byte = class$("java.lang.Byte")))) {
  84.                         var22 = Byte.TYPE;
  85.                      } else if (var22 == (class$java$lang$Character != null ? class$java$lang$Character : (class$java$lang$Character = class$("java.lang.Character")))) {
  86.                         var22 = Character.TYPE;
  87.                      } else if (var22 == (class$java$lang$Short != null ? class$java$lang$Short : (class$java$lang$Short = class$("java.lang.Short")))) {
  88.                         var22 = Short.TYPE;
  89.                      } else if (var22 == (class$java$lang$Integer != null ? class$java$lang$Integer : (class$java$lang$Integer = class$("java.lang.Integer")))) {
  90.                         var22 = Integer.TYPE;
  91.                      } else if (var22 == (class$java$lang$Long != null ? class$java$lang$Long : (class$java$lang$Long = class$("java.lang.Long")))) {
  92.                         var22 = Long.TYPE;
  93.                      }
  94.  
  95.                      var16[var18] = var22;
  96.                   }
  97.                }
  98.  
  99.                var9 = true;
  100.             } else {
  101.                for(int var10 = 0; var10 < var16.length; ++var10) {
  102.                   Class var21 = var16[var10];
  103.                   if (var21 != null) {
  104.                      if (var21 == Double.TYPE) {
  105.                         var21 = class$java$lang$Double != null ? class$java$lang$Double : (class$java$lang$Double = class$("java.lang.Double"));
  106.                      }
  107.  
  108.                      if (var21 == Float.TYPE) {
  109.                         var21 = class$java$lang$Float != null ? class$java$lang$Float : (class$java$lang$Float = class$("java.lang.Float"));
  110.                      } else if (var21 == Boolean.TYPE) {
  111.                         var21 = class$java$lang$Boolean != null ? class$java$lang$Boolean : (class$java$lang$Boolean = class$("java.lang.Boolean"));
  112.                      } else if (var21 == Byte.TYPE) {
  113.                         var21 = class$java$lang$Byte != null ? class$java$lang$Byte : (class$java$lang$Byte = class$("java.lang.Byte"));
  114.                      } else if (var21 == Character.TYPE) {
  115.                         var21 = class$java$lang$Character != null ? class$java$lang$Character : (class$java$lang$Character = class$("java.lang.Character"));
  116.                      } else if (var21 == Short.TYPE) {
  117.                         var21 = class$java$lang$Short != null ? class$java$lang$Short : (class$java$lang$Short = class$("java.lang.Short"));
  118.                      } else if (var21 == Integer.TYPE) {
  119.                         var21 = class$java$lang$Integer != null ? class$java$lang$Integer : (class$java$lang$Integer = class$("java.lang.Integer"));
  120.                      } else if (var21 == Long.TYPE) {
  121.                         var21 = class$java$lang$Long != null ? class$java$lang$Long : (class$java$lang$Long = class$("java.lang.Long"));
  122.                      }
  123.  
  124.                      var16[var10] = var21;
  125.                   }
  126.                }
  127.  
  128.                var17 = true;
  129.             }
  130.  
  131.             try {
  132.                if (var6) {
  133.                   Constructor var20 = ReflectionUtils.getConstructor((Class)var1, var16);
  134.                   Object var23 = var20.newInstance(var5);
  135.                   return var23;
  136.                }
  137.  
  138.                Method var19 = ReflectionUtils.getMethod(var1, var2, var16);
  139.                return var19.invoke(var1, var5);
  140.             } catch (NoSuchMethodException var13) {
  141.                if (var17) {
  142.                   throw var13;
  143.                }
  144.             }
  145.          }
  146.  
  147.          return null;
  148.       } catch (Exception var14) {
  149.          Throwable var11 = var14 instanceof InvocationTargetException ? ((InvocationTargetException)var14).getTargetException() : null;
  150.          throw new BSFException(BSFException.REASON_OTHER_ERROR, "method call/new failed: " + var14 + (var11 == null ? "" : " target exception: " + var11), var11);
  151.       }
  152.    }
  153.  
  154.    // $FF: synthetic method
  155.    static Class class$(String var0) {
  156.       try {
  157.          return Class.forName(var0);
  158.       } catch (ClassNotFoundException var2) {
  159.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  160.       }
  161.    }
  162. }
  163.